package com.kykj.kykjyzw.controller;

import com.kykj.kykjyzw.entity.ResultEntity;
import com.kykj.kykjyzw.vo.UserVo;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.util.UUID;

@RequestMapping("v2/test/")
@RestController
@CrossOrigin //解决跨域问题
public class Testcontroller {
    @Value("${project.localfilepath}")
    private String localfilepath;//本地文件上传路径

    /**
     * 获取用户
     * @param name 用户名
     * @return JSON
     */
    @GetMapping("test")
    // 定义一个get请求，路径为test
    private ResultEntity gettest(@RequestParam("name") String name){
        // 定义一个ResultEntity对象
        ResultEntity resultEntity =new ResultEntity();
        // 设置resultEntity对象的msg属性为"你好"+name
        resultEntity.setMsg("你好"+name);
        // 设置resultEntity对象的code属性为0
        resultEntity.setCode(0);
        // 返回resultEntity对象
        return resultEntity;
    }

    @PostMapping("test")
    // 接收一个UserVo类型的参数uservo，并返回一个ResultEntity类型的结果
    private ResultEntity settest(@RequestBody UserVo uservo){
        ResultEntity resultEntity =new ResultEntity();
        // 设置返回结果的消息，包含uservo的uname和phone
        resultEntity.setMsg("你好"+uservo.getUname()+"手机号"+uservo.getPhone());
        // 设置返回结果的状态码为0
        resultEntity.setCode(0);
        // 返回结果
        return resultEntity;
    }
    @PutMapping("test")
    // 定义一个PutMapping注解，用于处理PUT请求，路径为test
    private ResultEntity uptest(@RequestBody UserVo uservo){
        // 定义一个ResultEntity对象，用于返回结果
        ResultEntity resultEntity =new ResultEntity();
        // 设置返回结果的消息，包含用户名和手机号
        resultEntity.setMsg("你好"+uservo.getUname()+"手机号"+uservo.getPhone());
        // 设置返回结果的状态码为0
        resultEntity.setCode(0);
        // 返回结果
        return resultEntity;
    }
    @DeleteMapping("test/{name}")
    // 定义一个DeleteMapping注解，用于处理DELETE请求，路径为test
    private ResultEntity deletetest(@PathVariable("name") String name){
        // 定义一个ResultEntity对象，用于返回结果
        ResultEntity resultEntity =new ResultEntity();
        // 设置返回结果的消息，包含用户名
        resultEntity.setMsg("你好"+name);
        // 设置返回结果的状态码为0
        resultEntity.setCode(0);
        // 返回结果
        return resultEntity;
    }

    /**
     * 文件上传
     * @param multipartFile 文件对象
     * @return ResultEntity
     */
    @PostMapping("upfile")
    private ResultEntity upFile(@RequestParam("multipartFile")MultipartFile multipartFile){
        ResultEntity resultEntity =new ResultEntity();
        String suffixName = multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf("."));
        String fileNewName = UUID.randomUUID().toString()+suffixName;//生成新的文件名
        String allFilePathAndName = localfilepath+"/"+fileNewName;//生成文件路径+文件名
        File dest = new File(allFilePathAndName);
        if (!dest.getParentFile().exists()) { //判断文件父目录是否存在
            dest.getParentFile().mkdir();//创建
        }
        try {
            multipartFile.transferTo(dest);//保存文件
            resultEntity.setMsg("上传成功");
            resultEntity.setCode(0);
        } catch (Exception exception){
            exception.printStackTrace();
            resultEntity.setMsg("上传失败");
            resultEntity.setCode(-1);
        }
        return resultEntity;
    }

}
